package me.zk.practice1.hw;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class HWBJ18 {
    public static void main(String[] args) {
        helper();
//        Scanner scanner = new Scanner(System.in);
//
//        int m = scanner.nextInt();
//
//        int n = scanner.nextInt();
//
//        int r = scanner.nextInt();
//
//        int[] ms = new int[m];
//        for (int i = 0; i < m; i++) {
//            ms[i] = scanner.nextInt();
//        }
//        int[] ns = new int[n];
//        for (int i = 0; i < n; i++) {
//            ns[i] = scanner.nextInt();
//        }
//
//
//        int i1=0,i2=0;
//        while (i1< ms.length && i2<ns.length) {
//            if (ms[i1] <= ns[i2] && (ns[i2]-ms[i1] <=r)) {
//                System.out.println(ms[i1]+ " " + ns[i2]);
//                i1++;
//                i2++;
//            } else {
//                if (ms[i1] > ns[i2]) {
//                    i2++;
//                }
//                if (ns[i2]-ms[i1] >r) {
//                    i1++;
//                }
//            }
//        }

    }

    public static int[] getIntArray(String s) {

        String[] strs = s.split(" ");
        int[] ms = new int[strs.length];
        for (int i = 0; i < strs.length; i++) {
            ms[i]= Integer.parseInt(strs[i]);
        }
        return ms;
    }

    public static void helper() {

                Scanner sc = new Scanner(System.in);

                int m = sc.nextInt();
                int n = sc.nextInt();
                int R = sc.nextInt();

                int[] a = new int[m];
                int[] b = new int[n];

                for(int i=0;i<m;i++){
                    a[i] = sc.nextInt();
                }
                for(int i=0;i<n;i++){
                    b[i] = sc.nextInt();
                }

                List<int[]> list = new ArrayList<>();

                //遍历A数组
                for(int i=0;i<a.length;i++){
                    //用来放置A、B数字
                    int[] ints = new int[2];
                    //B数组下标
                    int index = 0;
                    //最小距离
                    int min = Integer.MAX_VALUE;
                    //是否有符合条件的事件
                    boolean isHas = false;
                    while (index < b.length){
                        if(a[i] <= b[index] && b[index]-a[i] <= R && b[index]-a[i] < min){
                            min = b[index]-a[i];
                            ints[0] = a[i];
                            ints[1] = b[index];
                            isHas = true;
                        }
                        index++;    //因为两数组都是从大到小排列，index可以公用
                    }
                    if(isHas) list.add(ints);
                }

                list.forEach(e->{
                    System.out.println(e[0]+" "+e[1]);
                });
            }



}
